#ifndef __GPUProcessingTesting__Tester__
#define __GPUProcessingTesting__Tester__

#include "TrialsSet.h"

void validate();
void simplyKernelTest (unsigned int sizeOfDataTransfered, unsigned int repetition = 10000 );

/*
    check if it works with model 'latency and bandwidth'
 
    timeComputing = latency + sizeOfDataTransfered / bandwidth;
    latency: time of transfering data of minimum size (here 1 byte);
 
    bandwidth = sizeOfData / (averageTimeOfTransferingData - averageLatency);
 
    @argument unsigned int arg:
    
 */
void latencyBandwidthTest (unsigned int sizeOfDataTransfered, unsigned int repetition = 10000 );

TrialsSet<double> bufferForEachChannel_testFunction (const unsigned int numOfChannels, const unsigned int lengthOfBlock, const unsigned int numOfBlocks);
TrialsSet<double> oneBufferForAllChannels_testFunction (const unsigned int numOfChannels, const unsigned int lengthOfBlock, const unsigned int numOfBlocks );


#endif /* defined(__GPUProcessingTesting__Tester__) */
